/**
 * 质检设置API
 * Created by liuhq on 2017-06-13 11:25
 */

import send from '../http'

export default {
  /**
   * 查询质检模板
   * @param {Object} data
   * @param {Number} [data.page] 分页page，默认1
   * @param {Number} [data.limit] 分页limit，默认10
   * @param {*} [data.*] 其他条件
   */
  queryQualityCheckTemplate (data) {
    const req = {
      data,
      action: 'config.qualityCheck.queryQualityCheckTemplate'
    }
    return send.fetch(req, 'post')
  },

  /**
   * 保存打分模板
   * @param {Object} data
   * @param {String} [data._id] 质检模板id（添加时不传或传空）
   * @param {Boolean|String} data.enable 是否启用
   * @param {String} data.name 质检模板名称
   * @param {String} data.QUALITY_TYPE 质检类型，'qualityCall' => 通话，'qualityWebchat' => 在线咨询
   * @param {String} data.memo 描述
   * @param {String} data.A-begin
   * @param {String} data.B-begin
   * @param {String} data.B-end
   * @param {String} data.C-begin
   * @param {String} data.C-end
   * @param {String} data.D-end
   * @param {[Object]} data.config 质检项
   * @param {Number|String} data.config[].order 顺序
   * @param {String} data.config[].name 描述
   * @param {String} data.config[].weight 权重
   * @param {Boolean} data.config[].fatal 是否致命项
   */
  saveQualityCheckTemplate (data) {
    const req = {
      data,
      action: 'config.qualityCheck.saveQualityCheckTemplate'
    }
    return send.fetch(req, 'post')
  },

  /**
   * 保存pass模板
   * @param {Object} data
   * @param {String} [data._id] 质检模板id（添加时不传或传空）
   * @param {Boolean|String} data.enable 是否启用
   * @param {String} data.name 质检模板名称
   * @param {String} data.uncurxratio 非关键错误比例
   * @param {String} type 类型，'pass'
   * @param {[Object]} data.config
   * @param {Number|String} data.config[].order 顺序
   * @param {String} data.config[].name key
   * @param {String} data.config[].value 描述
   * @param {[Object]} data.config[].child 子选项
   * @param {Number|String} data.config[].Non_Fatal
   * @param {String} data.config[].fatalName 致命项key
   * @param {Boolean} data.config[].fatalValue 致命项value
   */
  saveQualityCheckTemplateTwo (data) {
    const req = {
      data,
      action: 'config.qualityCheck.saveQualityCheckTemplateTwo'
    }
    return send.fetch(req, 'post')
  },

  /**
   * 修改质检模板状态（停用/启用）
   * @param {Object} data
   * @param {String} data._id 质检模板id
   * @param {String} data.currentStatus 当前状态（启用 => 'true'，停用 => 'false'）
   */
  changeQualityCheckTemplateStatus (data) {
    const req = {
      data,
      action: 'config.qualityCheck.changeQualityCheckTemplateStatus'
    }
    return send.fetch(req, 'post')
  },

  /**
   * 查询质检周期
   * @param {Object} data
   * @param {Number} [data.page] 分页page，默认1
   * @param {Number} [data.limit] 分页limit，默认10
   * @param {*} [data.*] 其他条件
   */
  queryQualityCheckCycle (data) {
    const req = {
      data,
      action: 'config.qualityCheck.queryQualityCheckCycle'
    }
    return send.fetch(req, 'post')
  },

  /**
   * 保存质检周期
   * @param {Object} data
   * @param {String} [data._id] 质检周期id，添加时传null
   * @param {String} data.cycleName 名称
   * @param {String} data.cycleBegins 开始日期
   * @param {String} data.cycleEnds 结束日期
   * @param {Number} data.cycleInterval 周期间隔天数，自然月传null
   */
  saveQualityCheckCycle (data) {
    const req = {
      data,
      action: 'config.qualityCheck.saveQualityCheckCycle'
    }
    return send.fetch(req, 'post')
  },

  /**
   * 修改质检周期状态（停用/启用）
   * @param {Object} data
   * @param {String} data.cycleId 质检周期id
   * @param {Number} data.active 修改后的状态（启用 => true，停用 => false）
   */
  changeQualityCheckCycleStatus (data) {
    const req = {
      data,
      action: 'config.qualityCheck.changeQualityCheckCycleStatus'
    }
    return send.fetch(req, 'post')
  },

  /**
   * 查询人工绩效数设置
   * @param {Object} data
   * @param {String} [data.name] 名称
   * @param {Number} [data.page] 分页page，默认1
   * @param {Number} [data.limit] 分页limit，默认10
   * @param {*} [data.*] 其他条件
   */
  queryPerformanceRelatedNum (data) {
    const req = {
      data,
      action: 'config.qualityCheck.queryPerformanceRelatedNum'
    }
    return send.fetch(req, 'post')
  },

  /**
   * 添加人工绩效数设置
   * @param {Object} data
   * @param {String} data.name 名称
   * @param {String} data.cycle 质检周期id
   * @param {Number} data.threshold 提醒阈值
   * @param {[String]} data.extens 提醒座席id数组
   * @param {Boolean} data.includeSubordinate 是否包含座席下级
   */
  addPerformanceRelatedNum (data) {
    const req = {
      data,
      action: 'config.qualityCheck.addPerformanceRelatedNum'
    }
    return send.fetch(req, 'post')
  },

  /**
   * 修改人工绩效数设置
   * @param {Object} data
   * @param {String} data._id 人工绩效数设置id
   * @param {String} data.name 名称
   * @param {String} data.cycle 质检周期id
   * @param {Number} data.threshold 提醒阈值
   * @param {[String]} data.extens 提醒座席id数组
   * @param {Boolean} data.includeSubordinate 是否包含座席下级
   */
  updatePerformanceRelatedNum (data) {
    const req = {
      data,
      action: 'config.qualityCheck.updatePerformanceRelatedNum'
    }
    return send.fetch(req, 'post')
  },

  /**
   * 修改人工绩效数设置状态（停用/启用）
   * @param {Object} data
   * @param {String} data._id 人工绩效数设置id
   * @param {Number} data.enable 修改后的状态（启用 => true，停用 => false）
   */
  stopOrUsePerformanceRelatedNum (data) {
    const req = {
      data,
      action: 'config.qualityCheck.stopOrUsePerformanceRelatedNum'
    }
    return send.fetch(req, 'post')
  },

  /**
   * 查询监控类型
   * @param {String} data 账户id
   */
  queryQualityCheckMonitorType (data) {
    const req = {
      data,
      action: 'config.qualityCheck.queryQualityCheckMonitorType'
    }
    return send.fetch(req, 'post')
  },

  /**
   * 添加/修改监控类型
   * @param {Object} data
   * @param {String} [data._id] 监控类型id，修改传，添加不传
   * @param {String} data.name 名称
   * @param {String} data.account 账户id
   */
  addQualityCheckMonitorType (data) {
    const req = {
      data,
      action: 'config.qualityCheck.addQualityCheckMonitorType'
    }
    return send.fetch(req, 'post')
  },
  /**
   * 启用不启用监控类型是否必填
   * @param {Object} data
   * @param {String} [data.status] {status: "enable/disable"}
   */
  updateQualityCheckMointorTypeStatus (data) {
    const req = {
      data,
      action: 'config.qualityCheck.updateQualityCheckMointorTypeStatus'
    }
    return send.fetch(req, 'post')
  }
}
